package com.keduw.java;

import java.util.Arrays;

/**
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 *
 * 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
 *
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 *  
 *
 * 示例 1：
 *
 * 输入：x = 123
 * 输出：321
 * 示例 2：
 *
 * 输入：x = -123
 * 输出：-321
 * 示例 3：
 *
 * 输入：x = 120
 * 输出：21
 * 示例 4：
 *
 * 输入：x = 0
 * 输出：0
 *  
 *
 * 提示：
 *
 * -231 <= x <= 231 - 1
 *
 * @author 林风自在
 * @date 2021.10.11
 */
public class Solution {

    public int reverse(int x) {
        boolean isNegative = x < 0;
        String number = String.valueOf(isNegative ? -x : x);
        char[] chars = number.toCharArray();
        for (int i = 0, length = chars.length; i < length / 2; i++){
            char ch1 = chars[i];
            chars[i] = chars[length - i - 1];
            chars[length - i - 1] = ch1;
        }
        number = String.copyValueOf(chars);
        number = isNegative ? "-" + number : number;
        return parserInt(number, 0);
    }

    private int parserInt(String number, int value){
        try {
            return Integer.parseInt(number);
        }catch (Exception e){
            return value;
        }
    }
}
